home *** CD-ROM | disk | FTP | other *** search
/ Mission 3 / Mission 3.zip / Mission 3.iso / zugabe / va45 / visual45 / library / extend / rs232.s < prev    next >
Text File  |  1998-05-16  |  2KB  |  105 lines

  1. *--------------------------------------------------------------------------*
  2.  
  3.     ifd LIB_RS232
  4.  
  5. GWVA_RS232_SEND_STRING_WITH_TIMEOUT:    ; a0=buffer,d0.l=length,d1.w=port,d2.l=timeout in 1/200 s
  6.  
  7.     tst.l d0
  8.     ble .nothing_to_send
  9.  
  10.     clr.l GWVA_OLD_200HZ_COUNTER
  11.  
  12.     move d1,d3
  13.     cmp.w #3,d1
  14.     bne.s .paspatch
  15.     moveq #4,d3
  16. .paspatch:
  17.  
  18. .send_next_bytes:
  19.  
  20.     save.l d0-d3/a0
  21.     move d3,-(sp)    ; ikbd <-> midi
  22.     appel bios,8,4
  23.     tst d0
  24.     bne.s .buffempty
  25.  
  26.     bsr GWVA_GET_200HZ_DELAY_SINCE_LAST_CALL
  27.     move.l d0,d4
  28.     load.l d0-d3/a0
  29.     cmp.l d2,d4
  30.     blt.s .send_next_bytes
  31.  
  32.     moveq #GWVA_ERROR_GENERIC,d7
  33.     rts
  34.  
  35. .buffempty:    load.l d0-d3/a0
  36.  
  37.     move.b (a0)+,d4
  38.     subq.l #1,d0
  39.     bmi.s .fini
  40.  
  41.     save.l d0-d3/a0
  42.     move.w d4,-(sp)
  43.     move.w d1,-(sp)
  44.     appel bios,3,6
  45.     load.l d0-d3/a0
  46.  
  47.     bra.s .send_next_bytes
  48.  
  49. .nothing_to_send:
  50. .fini:
  51.     clr d7
  52.     rts
  53.  
  54. GWVA_RS232_SEND_STRING_WITHOUT_CONTROL:    ; a0=buffer,d0.l=length,d1.w=port
  55.  
  56.     move.b (a0)+,d4
  57.     subq.l #1,d0
  58.     bmi.s .fini
  59.  
  60.     save.l d0-d1/a0
  61.     move.w d4,-(sp)
  62.     move.w d1,-(sp)
  63.     appel bios,3,6
  64.     load.l d0-d1/a0
  65.  
  66.     bra.s RS232_SEND_STRING_WITHOUT_CONTROL
  67. .fini:
  68.     rts
  69.  
  70. GWVA_RS232_TEST_IF_CHAR_PRESENT:    ; d0.w=port sortie d7=-1 : non
  71.     move.w d0,-(sp)
  72.     appel bios,1,4    ; -1:1 char present
  73.     moveq #-1,d7
  74.     sub d0,d7
  75.     rts
  76.  
  77. GWVA_RS232_GET_AVAILABLE_CHARS:    ; a0=buffer,d0.l=max store length,d1.w=port =>d0.l=nb capturés
  78.     clr.l d2
  79.  
  80. .get_all:    subq.l #1,d0
  81.     bmi.s .fin_capture2
  82.  
  83.     save.l d0-d2/a0
  84.     move d1,-(sp)
  85.     appel bios,1,4        ; bconstat
  86.     tst d0
  87.     beq.s .fin_capture1
  88.  
  89.     move 4+2(sp),-(sp)        ; ruse : ptr d0 d1 d2 a0
  90.     appel bios,2,4        ; bconin
  91.     move d0,d3
  92.     load.l d0-d2/a0
  93.  
  94.     move.b d3,(a0)+
  95.     addq.l #1,d2
  96.     bra.s .get_all
  97.  
  98. .fin_capture1:
  99.     load.l d0-d2/a0
  100. .fin_capture2:
  101.     move.l d2,d0
  102.     rts
  103.  
  104.     endc    ; ifd LIB_RS232
  105.